/*
 * @author 渡一
 * @date 2024-12-02 11:04:27
 * @description 用于延迟显示的hook函数,用于在页面加载完成后延迟显示某些元素
 * @see 🚀
 * @status done
 */

import { ref } from 'vue'

/**
 * 用于延迟显示的hook函数
 * @param maxFrameCount 最大帧数，默认为1000
 * @returns
 */
export function useDefer(maxFrameCount = 1000) {
  // 定义一个响应式变量frameCount，用于记录帧数
  const frameCount = ref(0)
  // 定义一个函数refrwshFrameCount，用于刷新帧数
  const refrwshFrameCount = () => {
    // 使用requestAnimationFrame函数，每帧刷新一次
    requestAnimationFrame(() => {
      // 帧数加1
      frameCount.value++
      // 如果帧数小于最大帧数，则继续刷新
      if (frameCount.value < maxFrameCount) {
        refrwshFrameCount()
      }
    })
  }
  // 调用refrwshFrameCount函数，开始刷新帧数
  refrwshFrameCount()
  // 返回一个函数，用于判断是否达到指定帧数
  return function (showInFrameCount: number) {
    // 如果当前帧数大于等于指定帧数，则返回true，否则返回false
    return frameCount.value >= showInFrameCount
  }
}
